package deletedelete;

import java.io.*;

public class IO44 {
    public static void main(String[] args) throws IOException {
        /*
        3、分别使用节点流：FileInputStream、FileOutputStream和缓冲流：
          BufferedInputStream、BufferedOutputStream实现文本文件/图片/视频文件的复制。
          并比较二者在数据复制方面的效率。
        */

         //缓冲流的特点
        //1、使用了底层流对象从具体设备上获取数据，并将数据存储到缓冲区的数组内。
        //2、通过缓冲区的read()方法从缓冲区获取具体的字符数据，这样就提高了效率。
        //3、如果用read方法读取字符数据，并存储到另一个容器中，直到读取到了换行符时，
        //       将另一个容器临时存储的数据转成字符串返回，就形成了readLine()功能。
        //4、且当我们复制的文件足够大的时候,我们使用缓冲流就能明显的感觉到缓冲流比基本流高效很多


        //复制E:/output.txt文件
        FileInputStream in=new FileInputStream("E:/output.txt");
        FileOutputStream out=new FileOutputStream("E:/output22.txt");

        int len;
        byte[] buffer=new byte[1024];
        while((len=in.read(buffer))!=-1){
            out.write(buffer,0,len);
            System.out.println("文件已经复制成功!");
        }

        out.close();
        in.close();

        //复制图片
          copyPic("E:/GY.jpg","E:/GY22.jpg");
    }


    public static void copyPic(String url1, String url2) throws IOException {
        //复制E:/GY.jpg 为 E:/GY22.jpg
        BufferedInputStream in=new BufferedInputStream(new FileInputStream(url1));
        BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(url2));

        int len;
        byte[] buffer=new byte[1024];
        while((len=in.read(buffer))!=-1){
            out.write(buffer,0,len);
        }
        System.out.println("图片已经复制成功");
        out.flush();

        out.close();
        in.close();

    }

}
